<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:p="pilferpage" xmlns:mx="http://www.adobe.com/2006/mxml">

	<xsl:output method="xml" omit-xml-declaration="yes" cdata-section-elements="mx:htmlText a"/>

	<xsl:template match="/">
		<mx:Application>
			<xsl:apply-templates/>
		</mx:Application>
	</xsl:template>

	<xsl:template match="p:table">
		<xsl:variable name="id">
			<xsl:text>table</xsl:text>
			<xsl:number/>
		</xsl:variable>
		<xsl:apply-templates select="p:title"/>
		<mx:DataGrid id="{$id}" rowCount="5">
			<xsl:attribute name="dataProvider">{<xsl:value-of select="$id"/>_source}</xsl:attribute>
			<mx:columns>
				<xsl:choose>
					<xsl:when test="p:head/p:row[1]/p:cell">
						<xsl:for-each select="p:head/p:row[1]/p:cell">
							<mx:DataGridColumn dataField="cell{position()}" headerText="{.}"/>
						</xsl:for-each>
					</xsl:when>
					<xsl:otherwise>
						<xsl:for-each select="p:row[1]/p:cell | p:body/p:row[1]/p:cell">
							<mx:DataGridColumn dataField="cell{position()}" headerText="Column {position()}"/>
						</xsl:for-each>
					</xsl:otherwise>
				</xsl:choose>
			</mx:columns>
		</mx:DataGrid>
		<mx:XMLList id="{$id}_source">
			<xsl:apply-templates select="p:row | p:body | p:foot"/>
		</mx:XMLList>
	</xsl:template>

	<xsl:template match="p:row">
		<!-- intentionally no namespace -->
		<xsl:element name="row">
			<xsl:apply-templates select="p:cell"/>
			<xsl:text>&#10;</xsl:text>
		</xsl:element>
		<xsl:apply-templates select="p:row"/>
	</xsl:template>

	<xsl:template match="p:cell">
		<xsl:variable name="cellIndex" select="position()"/>
		<xsl:text disable-output-escaping="yes">&lt;cell</xsl:text>
		<xsl:value-of select="$cellIndex"/>
		<xsl:text disable-output-escaping="yes">&gt;</xsl:text>
		<xsl:apply-templates/>
		<xsl:text disable-output-escaping="yes">&lt;/cell</xsl:text>
		<xsl:value-of select="$cellIndex"/>
		<xsl:text disable-output-escaping="yes">&gt;</xsl:text>
	</xsl:template>

	<xsl:template match="p:link">
		<xsl:element name="a">
			<xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
			<xsl:apply-templates/>
		</xsl:element>
	</xsl:template>

	<xsl:template match="p:link" mode="copyAsText">
		<xsl:text>&lt;a href="</xsl:text>
		<xsl:value-of select="@url"/>
		<xsl:text>"&gt;</xsl:text>
		<xsl:apply-templates mode="copyAsText"/>
		<xsl:text>&lt;/a&gt;</xsl:text>
	</xsl:template>

	<xsl:template match="p:title">
		<mx:Text width="100%">
			<xsl:element name="mx:htmlText">
				<xsl:text>&lt;font size="</xsl:text>
				<xsl:choose>
					<xsl:when test="parent::p:table">
						<xsl:text>1</xsl:text>
					</xsl:when>
					<xsl:otherwise>
						<xsl:variable name="ancestorSections" select="ancestor::p:section"/>
						<xsl:choose>
							<xsl:when test="count($ancestorSections) &gt; 4">
								<xsl:text>6</xsl:text>
							</xsl:when>
							<xsl:when test="count($ancestorSections) &gt; 3">
								<xsl:text>5</xsl:text>
							</xsl:when>
							<xsl:when test="count($ancestorSections) &gt; 2">
								<xsl:text>4</xsl:text>
							</xsl:when>
							<xsl:when test="count($ancestorSections) &gt; 1">
								<xsl:text>3</xsl:text>
							</xsl:when>
							<xsl:when test="count($ancestorSections) &gt; 0">
								<xsl:text>2</xsl:text>
							</xsl:when>
							<xsl:otherwise>
								<xsl:text>1</xsl:text>
							</xsl:otherwise>
						</xsl:choose>
					</xsl:otherwise>
				</xsl:choose>
				<xsl:text>"&gt;</xsl:text>
				<xsl:apply-templates mode="copyAsText"/>
				<xsl:text>&lt;/font&gt;</xsl:text>
			</xsl:element>
		</mx:Text>
	</xsl:template>	

	<xsl:template match="p:paragraph">
		<mx:Text width="100%">
			<xsl:choose>
				<xsl:when test="*">
					<xsl:element name="mx:htmlText"><xsl:apply-templates mode="copyAsText"/></xsl:element>
				</xsl:when>
				<xsl:otherwise>
					<xsl:element name="mx:text"><xsl:apply-templates/></xsl:element>
				</xsl:otherwise>
			</xsl:choose>
		</mx:Text>
	</xsl:template>

	<xsl:template match="*" mode="copyAsText">
		<xsl:text>&lt;</xsl:text>
		<xsl:value-of select="local-name()"/>
		<xsl:for-each select="@*">
			<xsl:text> </xsl:text>
			<xsl:value-of select="local-name()"/>
			<xsl:text>="</xsl:text>
			<xsl:value-of select="."/>
			<xsl:text>"</xsl:text>
		</xsl:for-each>
		<xsl:text>&gt;</xsl:text>
		<xsl:apply-templates mode="copyAsText"/>
		<xsl:text>&lt;/</xsl:text>
		<xsl:value-of select="local-name()"/>
		<xsl:text>&gt;</xsl:text>
	</xsl:template>


</xsl:stylesheet>
